<html>
<head><meta charset="utf-8"><title>merging RLS and VS Code extension · t-compiler/rust-analyzer · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/index.html">t-compiler/rust-analyzer</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html">merging RLS and VS Code extension</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="195568546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195568546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195568546">(Apr 28 2020 at 14:04)</a>:</h4>
<p>Hi <span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> ! I feel like we should chat a bit about strategy for VS Code extension some time. I really like your proposal about using a single existing extensions for both.</p>
<p>I don't have time for a chat <em>right</em> now, but I am creating this stream as a placeholder, and for the case you already have some ideas do dump in <code>async</code> fashion :)</p>



<a name="195568631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195568631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195568631">(Apr 28 2020 at 14:05)</a>:</h4>
<p>sounds great <span aria-label="thumbs up" class="emoji emoji-1f44d" role="img" title="thumbs up">:thumbs_up:</span></p>



<a name="195578075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195578075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195578075">(Apr 28 2020 at 15:09)</a>:</h4>
<p>So I think immediately we should re-brand the Rust (rls) extension to a regular "Rust support for Visual Studio Code" or similar (de-emphasize RLS)</p>



<a name="195578254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195578254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195578254">(Apr 28 2020 at 15:10)</a>:</h4>
<p>I did clean some bits and pieces and tried to extract the core "client workspaces" (spawned LSPs and their <code>rootUri</code>s) and project detection logic and abstract it away from the rest of the extension</p>



<a name="195578287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195578287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195578287">(Apr 28 2020 at 15:11)</a>:</h4>
<p>so I'd say we're in a good position to start implementing the RA engine support</p>



<a name="195578419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195578419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195578419">(Apr 28 2020 at 15:11)</a>:</h4>
<p>One thing that needs reworking is the configuration prefixes - currently we have <code>rust-client.*</code> for anything client specific and <code>rust.*</code> are automatically synced with corresponding plugins</p>



<a name="195578596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195578596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195578596">(Apr 28 2020 at 15:12)</a>:</h4>
<p>so I think we'd have to change that logic and extract a common Rust and RLS-specific options or at least warn against using RLS-specific configurations (and vice-versa with RA)</p>



<a name="195865868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195865868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195865868">(Apr 30 2020 at 16:34)</a>:</h4>
<p><span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> let's continue here, for future reference</p>



<a name="195865920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195865920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195865920">(Apr 30 2020 at 16:35)</a>:</h4>
<p>So I'm all for merging the plugins, definitely</p>



<a name="195865933"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195865933" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195865933">(Apr 30 2020 at 16:35)</a>:</h4>
<p>So, I wouldn't actually <em>hate</em> moving vscode plugin to a separare repo, but I definitelly would strongly prefer it in tree</p>



<a name="195865967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195865967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195865967">(Apr 30 2020 at 16:35)</a>:</h4>
<p>and I don't feel there are strong reasons not to do this.</p>



<a name="195865982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195865982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195865982">(Apr 30 2020 at 16:35)</a>:</h4>
<p>heh, I just wanted to metion that I'm strongly in favour of having it dedicated :)</p>



<a name="195866002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866002">(Apr 30 2020 at 16:35)</a>:</h4>
<p>Like, even if it is in a separate repo under rust-lang, it's still blessed</p>



<a name="195866164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866164">(Apr 30 2020 at 16:36)</a>:</h4>
<p>But I guess that's probably not the most important thing -- it should be easey to move one way or anoter afterwards</p>



<a name="195866176"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866176" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866176">(Apr 30 2020 at 16:36)</a>:</h4>
<p>for me, I think that coupling these two together encourages doing so even further, which results in rust-analyzer not being strictly LSP conformant and/or having some issues when trying to integrate with other editors</p>



<a name="195866245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866245">(Apr 30 2020 at 16:37)</a>:</h4>
<p>and it sorts of sends the message of 'extension for Rust Analyzer', which I believe should be "the official, go-to Rust support extension for Visual Studio Code"</p>



<a name="195866286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866286">(Apr 30 2020 at 16:37)</a>:</h4>
<p>so that people don't need to go into details that there's RLs or Rust Analyzer or anything else, just a good VSCode experience out-of-box</p>



<a name="195866400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866400">(Apr 30 2020 at 16:38)</a>:</h4>
<p>Yeah, agree that "marketing"-wise separate repo is better</p>



<a name="195866431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866431">(Apr 30 2020 at 16:38)</a>:</h4>
<p>we could have nightly features or prototypes for a development extension in-tree, but once they mature I imagine we should add support for new features as they are stabilized and added to the official extension</p>



<a name="195866481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866481">(Apr 30 2020 at 16:39)</a>:</h4>
<p>That I would think would be worst :D</p>



<a name="195866524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866524">(Apr 30 2020 at 16:39)</a>:</h4>
<p>let's not then :) didn't want to lose the development velocity bonus of keeping stuff in-tree</p>



<a name="195866530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866530">(Apr 30 2020 at 16:39)</a>:</h4>
<p>Like, coordinating two streams of development is painful :)</p>



<a name="195866654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866654">(Apr 30 2020 at 16:40)</a>:</h4>
<p>if anything, I think it promotes a cleaner separation of concerns and more well-though "API" boundaries</p>



<a name="195866669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866669">(Apr 30 2020 at 16:40)</a>:</h4>
<p>so it's not like it's all bad <span aria-label="stuck out tongue" class="emoji emoji-1f61d" role="img" title="stuck out tongue">:stuck_out_tongue:</span></p>



<a name="195866684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866684">(Apr 30 2020 at 16:40)</a>:</h4>
<p>but agreed, it's more work overall</p>



<a name="195866736"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866736" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866736">(Apr 30 2020 at 16:40)</a>:</h4>
<p>Not sure -- like, there's a process boundary anyway, you can't get any more separated then that</p>



<a name="195866797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866797">(Apr 30 2020 at 16:41)</a>:</h4>
<p>but let's probably pause <em>this</em> particular discussion -- as I've said, these seems easy to change as we go</p>



<a name="195866814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866814">(Apr 30 2020 at 16:41)</a>:</h4>
<p>Rather, how do you imagine the actual merge?</p>



<a name="195866815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866815">(Apr 30 2020 at 16:41)</a>:</h4>
<p>yes, but the urge to be compliant to that once implementation is easy to satify if all you're going to do is push 1 commit with changes here and there</p>



<a name="195866867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866867">(Apr 30 2020 at 16:41)</a>:</h4>
<p>err, misspoke but you get the idea :)</p>



<a name="195866926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866926">(Apr 30 2020 at 16:42)</a>:</h4>
<p>I sort of see two ways this can play out</p>



<a name="195866974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195866974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195866974">(Apr 30 2020 at 16:42)</a>:</h4>
<p>I didn't read the source code for the rust-analyzer extension yet, which I think I should before commenting more on that</p>



<a name="195867031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867031">(Apr 30 2020 at 16:42)</a>:</h4>
<p>tbh, I haven't read source of rls-vscode for a while :D)</p>



<a name="195867108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867108">(Apr 30 2020 at 16:43)</a>:</h4>
<p>I don't think there's pressure to merge them right away - I'd focus on getting the support for Rust Analyzer first in the <code>rls-vscode</code>, so that we can technically progress with what's outlined in the RFC</p>



<a name="195867153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867153">(Apr 30 2020 at 16:43)</a>:</h4>
<p>Yeah, that also would work</p>



<a name="195867258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867258">(Apr 30 2020 at 16:44)</a>:</h4>
<p>as we go, we should add more and more feature parity but also document and identify the LSP extensions</p>



<a name="195867286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867286">(Apr 30 2020 at 16:44)</a>:</h4>
<p>On rust-analyzer side, I think it makese sense to first fix LSP-complience internally, and only then move to officially suggesting users to try</p>



<a name="195867289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867289">(Apr 30 2020 at 16:44)</a>:</h4>
<p>how did you see the process?</p>



<a name="195867405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867405">(Apr 30 2020 at 16:45)</a>:</h4>
<p>Let me think, I haven't considered adding preliminary support directly to rls-vscode</p>



<a name="195867590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867590">(Apr 30 2020 at 16:46)</a>:</h4>
<p>Yeah, I would imagine that eventually we'd just do one big-bang merge. Like, it's only 4k lines of code total, don't think we need any kind of complicated staged rollout procedure or what not</p>



<a name="195867680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867680">(Apr 30 2020 at 16:47)</a>:</h4>
<p>(as an aside, I considered implementing the extension in a single TS file, to get rid of the bundler, and to create a pressure to not add custom TS things)</p>



<a name="195867964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195867964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195867964">(Apr 30 2020 at 16:47)</a>:</h4>
<p>But initially it indeed seems a good idea to add <code>rust-analyzer</code> mode to existing extension, which would basically call <code>rust-analyzer</code> binary instead of <code>rls</code>.</p>



<a name="195868066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868066">(Apr 30 2020 at 16:48)</a>:</h4>
<p><em>Maybe</em> having just a config switch for this is enough? And showing the message to the user with the installation instructions.</p>



<a name="195868122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868122">(Apr 30 2020 at 16:48)</a>:</h4>
<p>We can also copy-paste the code for downloading the binary form GitHub releases, but it is somewhat messy</p>



<a name="195868125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868125">(Apr 30 2020 at 16:48)</a>:</h4>
<p>Well, maybe</p>



<a name="195868162"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868162" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868162">(Apr 30 2020 at 16:48)</a>:</h4>
<p>It sort of is nice to just click "Now use Rust Analyzer" and stuff is being done for you</p>



<a name="195868230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868230">(Apr 30 2020 at 16:49)</a>:</h4>
<p>Alternatively, we can first put rust-analyzer into <code>rustup</code>, and than installation becomes <code>rustup component add</code></p>



<a name="195868232"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868232" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868232">(Apr 30 2020 at 16:49)</a>:</h4>
<p>I  very much like that, coupled with the task execution introspection - users see what's happening so they can follow along and understand</p>



<a name="195868289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868289">(Apr 30 2020 at 16:49)</a>:</h4>
<p>what is "task exection introspection"?</p>



<a name="195868290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868290">(Apr 30 2020 at 16:49)</a>:</h4>
<p>yes, rustup component add rust-analyzer would be definitely the easiest to solve from the extension's perspective</p>



<a name="195868397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868397">(Apr 30 2020 at 16:50)</a>:</h4>
<p>so to install RLS, we need to install <code>rust-src</code>, <code>rust-analysis</code> and <code>rls</code> components - we execute the tasks as if they were provided by the user</p>



<a name="195868431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868431">(Apr 30 2020 at 16:50)</a>:</h4>
<p>and they can see the output and the progress of what's happening, e.g. <code>rustup component add XYZ --toolchain ABC</code></p>



<a name="195868514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868514">(Apr 30 2020 at 16:51)</a>:</h4>
<p>I think that's both convenient and informative, so the users don't think it's some black magic machinery they don't have any influence over</p>



<a name="195868552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868552">(Apr 30 2020 at 16:51)</a>:</h4>
<p>Hm, yep, that's nice UX!</p>



<a name="195868596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868596">(Apr 30 2020 at 16:51)</a>:</h4>
<p>So yeah, I think it'll be useful for you to talke a look at this code: <a href="https://github.com/rust-analyzer/rust-analyzer/blob/fec1e7c8e10e1c592642fac0c497cd57bd3f003c/editors/code/src/main.ts#L171-L243" title="https://github.com/rust-analyzer/rust-analyzer/blob/fec1e7c8e10e1c592642fac0c497cd57bd3f003c/editors/code/src/main.ts#L171-L243">https://github.com/rust-analyzer/rust-analyzer/blob/fec1e7c8e10e1c592642fac0c497cd57bd3f003c/editors/code/src/main.ts#L171-L243</a></p>



<a name="195868706"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868706" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868706">(Apr 30 2020 at 16:52)</a>:</h4>
<p>yep, thanks!</p>



<a name="195868799"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868799" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868799">(Apr 30 2020 at 16:52)</a>:</h4>
<p>(and probably <a href="https://github.com/rust-analyzer/rust-analyzer/blob/master/editors/code/src/net.ts" title="https://github.com/rust-analyzer/rust-analyzer/blob/master/editors/code/src/net.ts">https://github.com/rust-analyzer/rust-analyzer/blob/master/editors/code/src/net.ts</a> as well, which handled the networking)</p>



<a name="195868923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868923">(Apr 30 2020 at 16:53)</a>:</h4>
<p>That's the integration with the current release process. I <em>think</em> coping just that to rust-vscode would be the best way to get the ball rolling</p>



<a name="195868945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195868945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195868945">(Apr 30 2020 at 16:53)</a>:</h4>
<p>definitelly faster than pusing stuff to <code>rustup</code></p>



<a name="195884393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195884393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195884393">(Apr 30 2020 at 18:48)</a>:</h4>
<p>yep, definitely</p>



<a name="195884409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/195884409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#195884409">(Apr 30 2020 at 18:48)</a>:</h4>
<p>I'll copy over the relevant bits</p>



<a name="196383644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196383644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196383644">(May 06 2020 at 00:04)</a>:</h4>
<p>There's a WIP that downloads and install rust analyzer if <code>"rust-client.engine"</code> (also WIP) is set to <code>rust-analyzer</code>: <a href="https://github.com/rust-lang/rls-vscode/tree/support-rust-analyzer" title="https://github.com/rust-lang/rls-vscode/tree/support-rust-analyzer">https://github.com/rust-lang/rls-vscode/tree/support-rust-analyzer</a></p>



<a name="196383693"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196383693" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196383693">(May 06 2020 at 00:04)</a>:</h4>
<p>It's rough around the edges and lacks some bits like automatic rust-src component installation but it's getting there =)</p>



<a name="196383698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196383698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196383698">(May 06 2020 at 00:04)</a>:</h4>
<p>Great work, thanks!</p>



<a name="196599611"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196599611" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196599611">(May 06 2020 at 08:02)</a>:</h4>
<p>Nice!</p>



<a name="196599754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196599754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196599754">(May 06 2020 at 08:04)</a>:</h4>
<p>I wonder what specific next step should we pursue....</p>



<a name="196608777"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196608777" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196608777">(May 06 2020 at 09:31)</a>:</h4>
<p>I need to make the end-to-end installation experience pleasant and complete, along with further making internal bits more engine-agnostic</p>



<a name="196609412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196609412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196609412">(May 06 2020 at 09:39)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> there is one thing though that's making the current integration suboptimal. If I had to guess, Rust Analyzer listens to workspace folder changes and wants to be a single LSP server, whereas we went with the single server per project directory approach, to minimize the overhead so to speak</p>



<a name="196609465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196609465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196609465">(May 06 2020 at 09:40)</a>:</h4>
<p>is my guess correct? If so, what do you say about intercepting and ignoring the workspace change requests and keep the fine-grained approach we have currently?</p>



<a name="196609547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196609547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196609547">(May 06 2020 at 09:40)</a>:</h4>
<p>there's also the fact that rust-analyzer aims to be more build system agnostic, whereas our project layout logic in the extension uses Cargo.toml as its basis for project discovery and where to spawn the RLS instance</p>



<a name="196610340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196610340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196610340">(May 06 2020 at 09:49)</a>:</h4>
<p>I feel pretty strongly that a single server instance is a better approach</p>



<a name="196610449"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196610449" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196610449">(May 06 2020 at 09:50)</a>:</h4>
<p>rust-analyzer can (in theory more than in practice though) support arbitrary complex projects layout. For example, it can support several interdependent workspaces, and different workspaces can share sysroot crates</p>



<a name="196610520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196610520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196610520">(May 06 2020 at 09:51)</a>:</h4>
<p>There's some discussion about this in this PR: <a href="https://github.com/rust-analyzer/rust-analyzer/pull/3987" title="https://github.com/rust-analyzer/rust-analyzer/pull/3987">https://github.com/rust-analyzer/rust-analyzer/pull/3987</a></p>



<a name="196622476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196622476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196622476">(May 06 2020 at 11:52)</a>:</h4>
<p>didn't dig deeper into that but  just want to add that Jannick was also kind enough to contribute to the existing workspace support in the RLS extension</p>



<a name="196622627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196622627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196622627">(May 06 2020 at 11:54)</a>:</h4>
<p>and I'm not disagreeing on the single server instance approach, just to be clear</p>



<a name="196622691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196622691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196622691">(May 06 2020 at 11:54)</a>:</h4>
<p>however I do find the argument of laziness/reduced overhead sound, especially in terms of possibly big monorepos</p>



<a name="196622784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196622784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196622784">(May 06 2020 at 11:55)</a>:</h4>
<p>so I'm not sure how rust-analyzer works internally as of now, but if I were to initialize it in a monorepo will it try to, let's say, analyze project A even if I only opened/edited files for project B (which may not be related to project A)?</p>



<a name="196623021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196623021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196623021">(May 06 2020 at 11:57)</a>:</h4>
<p>/me digs into that PR</p>



<a name="196627336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196627336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196627336">(May 06 2020 at 12:36)</a>:</h4>
<p>Jesus christ I hate Zulip UX, sorry for the topic spam (edited already)</p>



<a name="196630439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196630439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196630439">(May 06 2020 at 13:02)</a>:</h4>
<p>So this is somewhat in the air internally, but generally you "initialize" <code>rust-analyzer</code> with a set of projects. The "initialize" logic is a piece that I'd expect we tweak quite a bit in the future, but at the moment it is "discover Cargo.toml's in workspace folders up to depth 1". One thing we should definitelly do is to change this to "look at the explicit set of Cargo.toml in the config", which should cover "I want to activate rust-analyzer only for subset of open projects"</p>



<a name="196632772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196632772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196632772">(May 06 2020 at 13:18)</a>:</h4>
<p>Does this mean that it doesn't respect <code>root{Path, Uri}</code> and rather looks for the in the configuration?</p>



<a name="196632867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196632867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196632867">(May 06 2020 at 13:19)</a>:</h4>
<p>So, at the moment, we <strong>don't</strong> look at config</p>



<a name="196632982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196632982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196632982">(May 06 2020 at 13:20)</a>:</h4>
<p>But I expect that we should add feature where, if config contains <code>cargoTomls = ["foo/Cargo.toml", "bar/Cargo.toml"]</code>, we should use that</p>



<a name="196633062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/196633062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#196633062">(May 06 2020 at 13:20)</a>:</h4>
<p>That is, I think it's important to nail down both:</p>
<p>1) auto discovery<br>
2) explicit config</p>
<p>and that probably auto-discovery should desugar internally to the same thing as explicit config</p>



<a name="197182825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197182825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197182825">(May 11 2020 at 18:03)</a>:</h4>
<p>Here's a first pass at supporting Rust Analyzer in a user-friendly way - it'll install rust-src for you, you can specify a releaseTag that can be downloaded for you (and upgraded/changed later if you want) or you can specify your own binary.</p>



<a name="197182835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197182835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197182835">(May 11 2020 at 18:03)</a>:</h4>
<p><a href="https://github.com/rust-lang/rls-vscode/pull/793">https://github.com/rust-lang/rls-vscode/pull/793</a></p>



<a name="197182920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197182920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197182920">(May 11 2020 at 18:04)</a>:</h4>
<p>It also supports passing rust-analyzer-specific options although they're not yet typed out in package.json for the user</p>



<a name="197182995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197182995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197182995">(May 11 2020 at 18:05)</a>:</h4>
<p>I'd appreciate taking a look &lt;3 If there won't be anything critical, I'd like to do that in a follow-up PR though</p>



<a name="197183676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197183676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Coenen Benjamin <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197183676">(May 11 2020 at 18:11)</a>:</h4>
<p>I checked the PR and I'm wondering for how long we will use the "experimental" wording when we talk about rust-analyzer ? Is RFC a goal to not use "experimental" anymore ?</p>



<a name="197236821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197236821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197236821">(May 12 2020 at 06:07)</a>:</h4>
<p>I meant to emphasize that rust-analyzer <em>support in rls-vscode</em> is experimental  in itself</p>



<a name="197236883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/merging%20RLS%20and%20VS%20Code%20extension/near/197236883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/merging.20RLS.20and.20VS.20Code.20extension.html#197236883">(May 12 2020 at 06:08)</a>:</h4>
<p>That’s because wcustom commands like applySourceChange are not implemented, somewhat limiting the practical capabilities of the tool</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>